package com.cell.service.user;

import com.cell.pojo.DTO.user.loginaccount.loginByPasswordDTO;
import com.cell.pojo.DTO.user.loginaccount.validOldPasswordDTO;
import com.cell.pojo.DTO.user.validation.validateCodeDTO;
import com.cell.pojo.entity.user.User;
import com.cell.pojo.entity.user.UserLoginAccount;
import com.baomidou.mybatisplus.extension.service.IService;

import java.security.NoSuchAlgorithmException;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author cloudJiang
 * @since 2022-06-04
 */
public interface IUserLoginAccountService extends IService<UserLoginAccount> {
    /**
     * 通过password和loginKey字段来登录
     *
     * @param loginByPasswordDTO
     * @throws NoSuchAlgorithmException
     */
    User loginByPassword(loginByPasswordDTO loginByPasswordDTO);

    /**
     * 在重置密码前验证旧密码
     *
     * @param validOldPasswordDTO
     */
    void validOldPassword(validOldPasswordDTO validOldPasswordDTO);


    /**
     * 通过发送验证码到手机号、邮箱，验证码登录
     *
     * @param validateCodeDTO
     * @return 0 表示登陆成功， 1 表示非空字段为空， 2 表示找不到用户(不存在或已注销)， 3 表示验证码错误。
     * @throws NoSuchAlgorithmException
     */
    User loginByValidCode(validateCodeDTO validateCodeDTO);

    /**
     * 修改用户密码
     *
     * @param password
     * @param accountId
     */
    void resetPassword(String password, Long accountId);

    /**
     * @param accountId
     * @param phone
     */
    void resetPhone(Long accountId, String phone);

    /**
     * @param accountId
     * @param email
     * @return
     */
    void resetEmail(Long accountId, String email);

    /**
     * @param accountId
     * @return
     */
    String getTurePhone(Long accountId);

    /**
     * @param accountId
     * @return
     */
    String getPhone(Long accountId);

    String getEmail(Long accountId);
}
